package poo.agendina;

import java.util.*;

import poo.agendina.Nominativo;

public class AgendinaAL extends AgendinaAstratta {

	private ArrayList<Nominativo> tabella = new ArrayList<>();

	public AgendinaAL() {
		this(100);
	}

	public AgendinaAL(int capacita) {
		tabella = new ArrayList<Nominativo>(capacita);
	}

	@Override
	public int size() {
		return tabella.size();
	}

	@Override
	public void rimuovi(Nominativo n) {
		int i = Collections.binarySearch(tabella, n);
		if (i < 0)
			return;
		tabella.remove(i);
	}// rimuovi

	@Override
	public void svuota() {
		tabella.clear();
	}

	public Iterator<Nominativo> iterator() {
		return tabella.iterator();
	}

	@Override
	public void aggiungi(Nominativo n) {
		int i = 0;
		boolean flag = false;
		while (i < tabella.size() && !flag) {
			if (tabella.get(i).compareTo(n) == 0) {
				tabella.set(i, n);
				flag = true;
			} else if (tabella.get(i).compareTo(n) > 0) {
				tabella.add(i, n);// inserisce n in posizione i
				flag = true;
			} else
				i++;
		}
		if (!flag)
			tabella.add(n);
	}

	public Nominativo cerca(Nominativo n) {
		int i = Collections.binarySearch(tabella, n);
		if (i >= 0)
			return tabella.get(i);
		return null;
	}
}
